#include <iostream>
using namespace std;

void myfunc(int a){
        cout<<"a: "<<a<<endl;
}
void myfunc(char * p){
        cout<<"p: "<<p<<endl;
}
void myfunc(int a, int b){
        cout<<"a: "<<a<<" b: "<<b<<endl;
}
void myfunc(char *a, char *b){
        cout<<"a: "<<a<<" b: "<<b<<endl;
}

//函数指针 基础的语法
//声明一个函数类型
typedef void (myTypeFunc)(int a, int b);
//myTypeFunc *myfuncp = NULL;  定义一个函数指针 这个指针指向函数的入口地址

//声明一个函数指针类型
typedef void (*myPTypeFunc)(int a, int b);//声明了一个指针的数据类型
// myPTypeFunc fp = NULL; //通过 函数指针类型 定义了 一个函数指针

//定义一个函数指针 变量
void (*myVarPFunc)(int a, int b);

int main(int argc, char const *argv[]){
       myPTypeFunc fp ;//定义了一个 函数指针 变量

       fp = myfunc;
       //fp(1); c++编译器 编译失败

       fp(1, 2);

/*
       char buf1[] = "aaa";
       char buf2[] = "bbb";
       fp(buf1, buf2);
*/
       
        return 0;
}